/**
 * Projeto Myou - Disciplina: Sistemas de Informação I
 * @author Ronycley Gonçalves Agra
 * @since 23/09/2011
 */
package myou.classes;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.List;

import java.lang.*;
import java.lang.reflect.*;

import myou.util.LeitorConfiguracao;
import p1.io.Entrada;
/**
 * Classe que modela a interface com o usuário. Se comunica com 
 * a classe Sistema que armazena a lógica de negócio e o repositório
 * @author Ronycley Gonçalves Agra
 * @version 1.00
 * @since Milestone 1 23/09/2011
 * @see myou.classes.Sistema
 * @see myou.classes.Interesse
 * @see myou.classes.Emprestimo
 * @see myou.classes.Mensagem
 * @see myou.classes.RequisicaoDeAmizade
 * @see myou.classes.RequisicaoDeEmprestimo
 * @see myou.classes.Sessao
 * @see myou.classes.Topico
 * @see myou.classes.Usuario
 * @see myou.classes.Item
 */
public class MyouUI {
	
	private Sistema sistema = new Sistema();
	private BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	private Sessao sessaoAtual = null;
	private LeitorConfiguracao config = null;
	
	/**
	 * Construtor
	 * @throws Exception 
	 */
	public MyouUI() throws Exception {
		this.sistema = new Sistema();
		this.in = new BufferedReader(new InputStreamReader(System.in));
		this.sessaoAtual = null;
		try{
			this.config = LeitorConfiguracao.getInstance();
		}catch(Exception e){
			throw e;
		}
	}
	
	/**
	 * Inicia o menu com as opções de usuário
	 */
	public void init() throws Exception{
		String modulo = moduloEscolhido();
		if(modulo.equals("99")){
			System.out.println("Tchau!");
		}else{
			String acao = acaoEscolhida(modulo);
			while (true) {
				modulo = moduloEscolhido();
				if(modulo.equals("99")){
					break;
				}
				acao = acaoEscolhida(modulo);
				if(acao.equals("99")){
					System.out.println("Tchau!");
					break;
				}else if(acao.equals("00")){
					continue;
				}else{
					try{
						String nomeMetodo = this.config.getNomeMetodoVisao(modulo,acao);
						//Java Reflection
						Class classeMyou = Class.forName("MyouUI");
						Class tipoParametros[] = new Class[0];  
			            Method metodoVisao = classeMyou.getMethod(nomeMetodo, tipoParametros); 
			            Object valores = metodoVisao.invoke(this, new Object[0]);
					}catch(Exception e){
						throw e;
					}
				}
			}
		}
	}
	
	/**
	 * Imprime o menu com os módulos disponíveis
	 * @return A opção escolhida
	 */
	private String moduloEscolhido() {
		System.out.println("Menu:");
		System.out.println("");
		List<String[]> modulos = this.config.getModulos();
		Iterator<String[]> i = modulos.iterator();
		while (i.hasNext()) {
			String modulo[] = i.next();
			System.out.println(" "+modulo[0]+" - "+modulo[1]);
		}
		System.out.println("99 - Sair do Sistema");
		System.out.println("");
		return new Integer(Entrada.in.lerInt("Qual a opção escolhida?")).toString();
	}
	
	/**
	 * Imprime o menu as ações disponíveis para o módulo escolhido
	 * @return A opção escolhida
	 */
	private String acaoEscolhida(String modulo) {
		System.out.println("Menu:");
		System.out.println("");
		List<String[]> acoes = this.config.getAcoes(modulo);
		Iterator<String[]> i = acoes.iterator();
		while (i.hasNext()) {
			String acao[] = i.next();
			System.out.println(" "+acao[0]+" - "+acao[1]);
		}
		System.out.println("00 - Voltar para módulos");
		System.out.println("99 - Sair do Sistema");
		System.out.println("");
		return new Integer(Entrada.in.lerInt("Qual a opção escolhida?")).toString();
	}

	/**
	 * Executa a opção de criar um usuário no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void criarUsuario() throws Exception {
		try{
			System.out.print("------------CADASTRAR USUÁRIO------------");
			System.out.println("");
			System.out.print("Login: ");
			String login = in.readLine();
			System.out.print("Nome: ");
			String nome = in.readLine();
			System.out.print("Endereço: ");
			String endereco = in.readLine();
			System.out.println("");
			sistema.criarUsuario(login, nome, endereco);
			System.out.println("Usuário criado com sucesso");
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		}catch(Exception e){
			throw e;
		}
	}

	/**
	 * Executa a opção de abrir uma sessão no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void fazerLogin() throws Exception {
		System.out.print("------------EFETURAR LOGIN------------");
		System.out.println("");
		System.out.print("Login: ");
		String login = in.readLine();
		System.out.println("");
		try {
			String idSessao = sistema.abrirSessao(login);
			this.sessaoAtual = sistema.localizarSessao(idSessao);
			System.out.println("Usuário logado: " + this.sessaoAtual.getUsuario().getNome());
			System.out.println("Id da sessão: " + this.sessaoAtual.getId());
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}

	/**
	 * Executa a opção de pesquisar os valores de um atributo do usuário no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void pesquisarUsuario() throws Exception {
		System.out.print("------------PESQUISAR USUÁRIO------------");
		System.out.println("");
		System.out.print("Login: ");
		String login = in.readLine();
		System.out.print("Atributo: ");
		String atributo = in.readLine();
		System.out.println("");
		try {
			String valor = sistema.getAtributoUsuario(login, atributo);
			System.out.println(atributo + ": " + valor);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de cadastrar um item no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void cadastrarItem() throws Exception {
		System.out.print("------------CADASTRAR ITEM------------");
		System.out.println("");
		System.out.print("Nome: ");
		String nome = in.readLine();
		System.out.print("Descrição: ");
		String descricao = in.readLine();
		System.out.print("Categoria: ");
		String categoria = in.readLine();
		System.out.println("");
		try {
			String idItem = sistema.cadastrarItem(this.sessaoAtual.getId(), nome, descricao, categoria);
			System.out.println("Id do novo item: "+idItem);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}

	/**
	 * Executa a opção de pesquisar um item no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void pesquisarItem() throws Exception {
		System.out.print("------------PESQUISAR ITEM------------");
		System.out.println("");
		System.out.print("Id do item: ");
		String idItem = in.readLine();
		System.out.print("atributo: ");
		String atributo = in.readLine();
		System.out.println("");
		try {
			String valor = sistema.getAtributoItem(idItem, atributo);
			System.out.println(atributo+": "+valor);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de localizar um usuário no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void localizarUsuario() throws Exception {
		System.out.print("------------LOCALIZAR USUÁRIO------------");
		System.out.println("");
		System.out.print("Chave: ");
		String chave = in.readLine();
		System.out.print("Atributo: ");
		String atributo = in.readLine();
		System.out.println("");
		try {
			String usuarios = sistema.localizarUsuario(this.sessaoAtual.getId(), chave, atributo);
			System.out.println("Usuários encontrados: "+usuarios);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de requisitar uma amizade no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void requisitarAmizade() throws Exception {
		System.out.println("------------REQUISITAR AMIZADE------------");
		System.out.println("");
		System.out.print("Login: ");
		String login = in.readLine();
		System.out.println("");
		try {
			sistema.requisitarAmizade(this.sessaoAtual.getId(), login);
			System.out.println("Requisição solicitada");
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de listar as requisições de amizade no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void getRequisicoesDeAmizade() throws Exception {
		System.out.print("------------REQUISIÇÕES DE AMIZADE------------");
		System.out.println("");
		try {
			String requisicoes = sistema.getRequisicoesDeAmizade(this.sessaoAtual.getId());
			System.out.println("Usuários requisitantes: "+requisicoes);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de aprovar uma amizade no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void aprovarAmizade() throws Exception {
		System.out.print("------------APROVAR AMIZADE------------");
		System.out.println("");
		System.out.print("Login: ");
		String login = in.readLine();
		System.out.println("");
		try {
			sistema.aprovarAmizade(this.sessaoAtual.getId(), login);
			System.out.println("Amizade aprovada");
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de testar uma amizade no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void ehAmigo() throws Exception {
		System.out.print("-----------TESTAR SE SÃO AMIGOS------------");
		System.out.println("");
		System.out.print("Login: ");
		String login = in.readLine();
		System.out.println("");
		try {
			String resultado = sistema.ehAmigo(this.sessaoAtual.getId(), login);
			if(resultado.equals("true")){
				System.out.println("Os usuários são amigos");
			}else{
				System.out.println("Os usuários não são amigos");
			}
			
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}

	/**
	 * Executa a opção de os amigos própios no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void visualizarAmigos() throws Exception {
		System.out.println("-----------VISUALIZAR AMIGOS PRÓPRIOS------------");
		System.out.println("");
		try {
			String resultado = sistema.getAmigos(this.sessaoAtual.getId());
			System.out.println("Amigos próprios: "+resultado);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de listar os amigos de um amigo no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void visualizarAmigosOutro() throws Exception {
		System.out.println("-----------VISUALIZAR AMIGOS DE AMIGO------------");
		System.out.println("");
		System.out.print("Login: ");
		String login = in.readLine();
		System.out.println("");
		try {
			String resultado = sistema.getAmigos(this.sessaoAtual.getId(),login);
			System.out.println("Amigos do amigo "+login+": "+resultado);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de listar os itens própios no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void visualizarItens() throws Exception {
		System.out.println("-----------VISUALIZAR ITENS------------");
		System.out.println("");
		try {
			String resultado = sistema.getItens(this.sessaoAtual.getId());
			System.out.println("Itens: "+resultado);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de listar os itens de um amigo no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void visualizarItensOutro() throws Exception {
		System.out.println("-----------VISUALIZAR ITENS DE AMIGO------------");
		System.out.println("");
		System.out.print("Login: ");
		String login = in.readLine();
		System.out.println("");
		try {
			String resultado = sistema.getItens(this.sessaoAtual.getId(),login);
			System.out.println("Itens: "+resultado);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de requisitar um empréstimo no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void requisitarEmprestimo() throws Exception {
		System.out.println("-----------REQUISITAR EMPRÉSTIMO------------");
		System.out.println("");
		System.out.print("Id do item: ");
		String idItem = in.readLine();
		System.out.print("Duração: ");
		String ducacao = in.readLine();
		System.out.println("");
		try {
			String idRequisicao = sistema.requisitarEmprestimo(this.sessaoAtual.getId(),idItem,new Integer(ducacao).intValue());
			System.out.println("Id da requisição criada: "+idRequisicao);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de aprovar um no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void aprovarEmprestimo() throws Exception {
		System.out.println("-----------APROVAR EMPRÉSTIMO------------");
		System.out.println("");
		System.out.print("Id da requisição de empréstimo: ");
		String idRequisicao = in.readLine();
		System.out.println("");
		try {
			String idEmprestimo = sistema.aprovarEmprestimo(this.sessaoAtual.getId(),idRequisicao);
			System.out.println("Id do empréstimo aprovado: "+idEmprestimo);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de listar os empréstimos no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void listarEmprestimos() throws Exception {
		System.out.println("-----------LISTAR EMPRÉSTIMOS------------");
		System.out.println("");
		System.out.print("Tipo: ");
		String tipo = in.readLine();
		System.out.println("");
		try {
			String resultado = sistema.getEmprestimos(this.sessaoAtual.getId(),tipo);
			System.out.println("Empréstimos: "+resultado);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de devolver um item no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void devolverItem() throws Exception {
		System.out.println("-----------DEVOLVER ITEM------------");
		System.out.println("");
		System.out.print("Id do empréstimo: ");
		String idEmprestimo = in.readLine();
		System.out.println("");
		try {
			sistema.devolverItem(this.sessaoAtual.getId(),idEmprestimo);
			System.out.println("Item devolvido");
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de confirmar o término de um empréstimo no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void confirmarTerminoEmprestimo() throws Exception {
		System.out.println("-----------CONFIRMAR TÉRMINO DE EMPRÉSTIMO------------");
		System.out.println("");
		System.out.print("Id do empréstimo: ");
		String idEmprestimo = in.readLine();
		System.out.println("");
		try {
			sistema.confirmarTerminoEmprestimo(this.sessaoAtual.getId(),idEmprestimo);
			System.out.println("Empréstimo terminado");
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de enviar mensagens offtopic no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void enviarMensagemOfftopic() throws Exception {
		System.out.println("-----------ENVIAR MENSAGEM OFFTOPIC------------");
		System.out.println("");
		System.out.print("Login do destinatário: ");
		String login = in.readLine();
		System.out.print("Assunto da mensagem: ");
		String assunto = in.readLine();
		System.out.print("Conteúdo da mensagem: ");
		String conteudo = in.readLine();
		System.out.println("");
		try {
			String idTopico = sistema.enviarMensagem(this.sessaoAtual.getId(),login,assunto,conteudo);
			System.out.println("Id do tópico da mensagem: "+idTopico);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de enviar mensagens de negociação no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void enviarMensagemNegociacao() throws Exception {
		System.out.println("-----------ENVIAR MENSAGEM NEGOCIAÇÃO------------");
		System.out.println("");
		System.out.print("Login do destinatário: ");
		String login = in.readLine();
		System.out.print("Assunto da mensagem: ");
		String assunto = in.readLine();
		System.out.print("Conteúdo da mensagem: ");
		String conteudo = in.readLine();
		System.out.print("Id da requisição de empréstimo: ");
		String idRequisicao = in.readLine();
		System.out.println("");
		try {
			String idTopico = sistema.enviarMensagem(this.sessaoAtual.getId(),login,assunto,conteudo,idRequisicao);
			System.out.println("Id do tópico da mensagem: "+idTopico);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de listar tópicos no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void lerTopicos() throws Exception {
		System.out.println("-----------LER TÓPICOS------------");
		System.out.println("");
		System.out.print("Tipo: ");
		String tipo = in.readLine();
		System.out.println("");
		try {
			String resultado = sistema.lerTopicos(this.sessaoAtual.getId(),tipo);
			System.out.println("Tópicos encontrados: "+resultado);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de listar mensagens no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void lerMensagens() throws Exception {
		System.out.println("-----------LER MENSAGENS------------");
		System.out.println("");
		System.out.print("Tipo: ");
		String idTopico = in.readLine();
		System.out.println("");
		try {
			String resultado = sistema.lerMensagens(this.sessaoAtual.getId(),idTopico);
			System.out.println("Mensagens encontrads: "+resultado);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de requsitar devolução no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void requisitarDevolucao() throws Exception {
		System.out.println("-----------REQUISITAR DEVOLUÇÃO------------");
		System.out.println("");
		System.out.print("Id do empréstimo: ");
		String idEmprestimo = in.readLine();
		System.out.println("");
		try {
			sistema.requisitarDevolucao(this.sessaoAtual.getId(), idEmprestimo);
			System.out.println("Devolução requisitada.");
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de adicinoar dias á data do sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void adicionarDias() throws Exception {
		System.out.println("-----------ADICIONAR DIAS------------");
		System.out.println("");
		System.out.print("Número de dias: ");
		String numeroDias = in.readLine();
		System.out.println("");
		try {
			Sistema.adicionarDias(new Integer(numeroDias).intValue());
			System.out.println("Devolução requisitada.");
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de registar o interesse em um item no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void registrarInteresse() throws Exception {
		System.out.println("-----------REGISTRAR INTERESSE------------");
		System.out.println("");
		System.out.print("Id do item: ");
		String idItem = in.readLine();
		System.out.println("");
		try {
			sistema.registrarInteresse(this.sessaoAtual.getId(), idItem);
			System.out.println("Interesse registrado");
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de localizar um item no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void localizarItem() throws Exception {
		System.out.println("-----------LOCALIZAR ITEM------------");
		System.out.println("");
		System.out.print("Chave: ");
		String chave = in.readLine();
		System.out.print("Atributo: ");
		String atributo = in.readLine();
		System.out.print("Tipo de ordenação: ");
		String tipoOrdenacao = in.readLine();
		System.out.print("Critério de ordenação: ");
		String criterioOrdenacao = in.readLine();
		System.out.println("");
		try {
			String resultado = sistema.pesquisarItem(this.sessaoAtual.getId(), chave, atributo, tipoOrdenacao, criterioOrdenacao);
			System.out.println("Resultado da pesquisa: "+resultado);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de desfazer uma amizade no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void desfazerAmizade() throws Exception {
		System.out.println("-----------DESFAZER AMIZADE------------");
		System.out.println("");
		System.out.print("Login: ");
		String login = in.readLine();
		System.out.println("");
		try {
			sistema.desfazerAmizade(this.sessaoAtual.getId(), login);
			System.out.println("Amizade desfeira ");
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de apagar um no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void apagarItem() throws Exception {
		System.out.println("-----------APAGAR ITEM------------");
		System.out.println("");
		System.out.print("Id do item: ");
		String idItem = in.readLine();
		System.out.println("");
		try {
			sistema.apagarItem(this.sessaoAtual.getId(), idItem);
			System.out.println("Item apagado.");
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de exibir ranking de um usuário no sistema
	 * @throws Exception Lança exceção inerente a respectiva ação
	 */
	private void getRanking() throws Exception {
		System.out.println("-----------EXIBIR RANKING------------");
		System.out.println("");
		System.out.print("Categoria: ");
		String categoria = in.readLine();
		System.out.println("");
		try {
			String resultado = sistema.getRanking(this.sessaoAtual.getId(), categoria);
			System.out.println("Ranking: "+resultado);
			System.out.println("");
			System.out.println("------------CONCLUÍDO------------");
		} catch (Exception e) {
			throw e;
		}
	}
	
	/**
	 * Executa a opção de sair da aplicação
	 */
	private void sair() {
		this.sistema = null;
		System.exit(0);
	}
	
	/*
	System.out.println(" 1 - Cadastrar Usuário");
	System.out.println(" 2 - Efetuar Login");
	System.out.println(" 3 - Pesquisar Usuário");
	System.out.println(" 4 - Cadastrar Item");
	System.out.println(" 5 - Pesquisar Atributo de Item");
	System.out.println(" 6 - Localizar Usuário");
	System.out.println(" 7 - Requisitar Amizade");
	System.out.println(" 8 - Listar Requisições de Amizade");
	System.out.println(" 9 - Aprovar Amizade");
	System.out.println("10 - Testar Amizade");
	System.out.println("11 - Visualizar Amigos");
	System.out.println("12 - Visualizar Amigos de Amigo");
	System.out.println("13 - Visualizar Itens");
	System.out.println("14 - Visualizar Itens de Amigo");
	System.out.println("15 - Requisitar Empréstimo");
	System.out.println("16 - Aprovar Empréstimo");
	System.out.println("17 - Listar Empréstimos");
	System.out.println("18 - Devolver Item");
	System.out.println("19 - Confirmar Término de Empréstimo");
	System.out.println("20 - Enviar Mensagem Offtopic");
	System.out.println("21 - Enviar Mensagem Negociação");
	System.out.println("22 - Ler Tópicos");
	System.out.println("23 - Ler Mensagens");
	System.out.println("24 - Requisitar Devolução");
	System.out.println("25 - Adicionar Dias");
	System.out.println("26 - Registrar Interesse");
	System.out.println("27 - Pesquisar Item");
	System.out.println("28 - Desfazer Amizade");
	System.out.println("29 - Apagar Item");
	System.out.println("30 - Exibir Ranking");
	System.out.println("99 - Sair do Sistema");
	*/
}
